package com.cc.moxingvoice.utils;

import android.content.Context;
import android.content.res.AssetManager;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * 创建日期：2018/2/28 on 13:19
 * 描述：
 * 作者：郭士超
 * QQ：1169380200
 */

public class AssetsUtil {

    /**
     * 复制asset文件到指定目录
     * @param oldPath  asset下的路径
     * @param newPath  SD卡下保存路径
     */
    public static void copyAssets(Context context, String oldPath, String newPath) {
        try {
            String fileNames[] = context.getAssets().list(oldPath);// 获取assets目录下的所有文件及目录名
            if (fileNames.length > 0) { // 如果是目录
                File file = new File(newPath);
                file.mkdirs();// 如果文件夹不存在，则递归
                for (String fileName : fileNames) {
                    copyAssets(context, oldPath + "/" + fileName, newPath + "/" + fileName);
                }
            } else {// 如果是文件
                InputStream is = context.getAssets().open(oldPath);
                FileOutputStream fos = new FileOutputStream(new File(newPath));
                byte[] buffer = new byte[1024];
                int byteCount = 0;
                while ((byteCount = is.read(buffer)) != -1) {// 循环从输入流读取
                    // buffer字节
                    fos.write(buffer, 0, byteCount);// 将读取的输入流写入到输出流
                }
                fos.flush();// 刷新缓冲区
                is.close();
                fos.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 获取Assets目录下所有的文件及文件夹
    public static List<String> getAssetsFileName(Context context, String filePath) {
        List<String> folderList = new ArrayList<String>();
        try {
            String fileNames[] = context.getAssets().list(filePath);//获取assets目录下的所有文件及目录名
            if (fileNames.length > 0) { // 如果是目录
                for (String fileName : fileNames) {
                    if (fileName.equals("icon.jpg") || fileName.equals("icon.png")) {
                        continue;
                    }
                    folderList.add(fileName);
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return folderList;
    }

    // 看assets的语音包下是否有此文件夹
    public static boolean isAssetsFileExists(Context context, String filePath, String fileName) {
        try {
            String[] names = context.getAssets().list(filePath);
            for (int i = 0; i < names.length; i++) {
                if (names[i].equals(fileName.trim())) {
                    return true;
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

}
